/*2021-7-22
https://www.acwing.com/problem/content/description/3778/
*/

#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int N=2e5+5;
int n,p[N],q[N];
bool st[N];

int main()
{
    ios::sync_with_stdio(false);
    cout.tie(NULL);
    int T;
    cin>>T;
    
    while(T--)
    {
        memset(q,0,sizeof q);
        memset(st,0,sizeof st);
        bool flag=false;
        cin>>n;
        
        for(int i=1;i<=n;i++)
        {
            cin>>p[i];
            q[p[i]]=i;
        }
        
        for(int i=1;i<=n;i++)
        {
            if(st[i] || !p[i]) continue;
            st[i]=true;
            int x=i,y=i;
            
            while(p[x] && !st[p[x]])
            {
                x=p[x];
                st[x]=true;
            }
            
            while(q[y] && !st[q[y]])
            {
                y=q[y];
                st[y]=true;
            }
            
            if(p[x]==y) continue;
            
            if(!flag)
            {
                flag=true;
                for(int j=1;j<=n;j++)
                {
                    if(!p[j] && !q[j])
                    {
                        st[j]=true;
                        p[x]=j;
                        x=p[x];
                    }
                }
            }
            p[x]=y;
            
        }
        
        if(!flag)
        {
            int x=0,y=0;
            for(int i=1;i<=n;i++)
            {
                if(!p[i])
                {
                    if(!x && !y) x=y=i;
                    else
                    {
                        p[x]=i;
                        x=i;
                    }
                }
            }
            p[x]=y;
        }
        
        for(int i=1;i<=n;i++)
            cout<<p[i]<<' ';
        cout<<"\n";
        
    }
    
    return 0;
}
 
